c comma operator evaluation order